1. Field of the Invention
The present invention generally relates to electronic design automation (EDA). More particularly, the present invention relates to dynamically changing the evaluation period to accelerate design debug sessions.
2. Description of Related Art
In general, electronic design automation (EDA) is a computer-based tool configured in various workstations to provide designers with automated or semi-automated tools for designing and verifying user""s custom circuit designs. EDA is generally used for creating, analyzing, and editing any electronic design for the purpose of simulation, emulation, prototyping, execution, or computing. EDA technology can also be used to develop systems (i.e., target systems) which will use the user-designed subsystem or component. The end result of EDA is a modified and enhanced design, typically in the form of discrete integrated circuits or printed circuit boards, that is an improvement over the original design while maintaining the spirit of the original design.
The value of software simulating a circuit design followed by hardware emulation is recognized in various industries that use and benefit from EDA technology. Nevertheless, current software simulation and hardware emulation/acceleration are cumbersome for the user because of the separate and independent nature of these processes. For example, the user may want to simulate or debug the circuit design using software simulation for part of the time, use those results and accelerate the simulation process using hardware models during other times, inspect various register and combinational logic values inside the circuit at select times, and return to software simulation at a later time, all in one debug/test session. Furthermore, as internal register and combinational logic values change as the simulation time advances, the user should be able to monitor these changes even if the changes are occurring in the hardware model during the hardware acceleration/emulation process.
Co-simulation arose out of a need to address some problems with the cumbersome nature of using two separate and independent processes of pure software simulation and pure hardware emulation/acceleration, and to make the overall system more user-friendly. However, co-simulators still have a number of drawbacks: (1) co-simulation systems require manual partitioning, (2) co-simulation uses two loosely coupled engines, (3) co-simulation speed is as slow as software simulation speed, and (4) co-simulation systems encounter race conditions.
First, partitioning between software and hardware is done manually, instead of automatically, further burdening the user. In essence, co-simulation requires the user to partition the design (starting with behavior level, then RTL, and then gate level) and to test the models themselves among the software and hardware at very large functional blocks. Such a constraint requires some degree of sophistication by the user.
Second, co-simulation systems utilize two loosely coupled and independent engines, which raise inter-engine synchronization, coordination, and flexibility issues. Co-simulation requires synchronization of two different verification enginesxe2x80x94software simulation and hardware emulation. Even though the software simulator side is coupled to the hardware accelerator side, only external pin-out data is available for inspection and loading. Values inside the modeled circuit at the register and combinational logic level are not available for easy inspection and downloading from one side to the other, limiting the utility of these co-simulator systems. Typically, the user may have to re-simulate the whole design if the user switches from software simulation to hardware acceleration and back. Thus, if the user wanted to switch between software simulation and hardware emulation/acceleration during a single debug session while being able to inspect register and combinational logic values, co-simulator systems do not provide this capability.
Third, co-simulation speed is as slow as simulation speed. Co-simulation requires synchronization of two different verification enginesxe2x80x94software simulation and hardware emulation. Each of the engines has its own control mechanism for driving the simulation or emulation. This implies that the synchronization between the software and hardware pushes the overall performance to a speed that is as low as software simulation. The additional overhead to coordinate the operation of these two engines adds to the slow speed of co-simulation systems.
Fourth, co-simulation systems encounter set-up, hold time, and clock glitch problems due to race conditions in the hardware logic element or hardware accelerator among clock signals. Co-simulators use hardware driven clocks, which may find themselves at the inputs to different logic elements at different times due to different wire line lengths. This raises the uncertainty level of evaluation results as some logic elements evaluate data at some time period and other logic elements evaluate data at different time periods, when these logic elements should be evaluating the data together.
Accordingly, a need exists in the industry for a system or method that addresses problems raised above by currently known simulation systems, hardware emulation systems, hardware accelerators, co-simulation, and coverification systems.
In accordance with the invention, there is provided a memory mapping system for mapping at least one memory block from at least one logic device to at least one memory device in a reconfigurable hardware unit. The reconfigurable hardware unit includes a conductive connector controller, at least one logic device for modeling at least a portion of the user design in hardware where the hardware model has at least one memory block and associated user memory interface, at least one memory device, a conductive connector subsystem coupling at least one logic device at least one memory device, and the conductor connector controller. The memory mapping system includes a conductive connector driver coupled to the conductive connector subsystem, and a memory block interface coupled to the conductive connector driver, the conductive connector subsystem, and the user memory interface to handle write/read memory access between at least one logic device and at least one memory device. At least one memory device stores the memory blocks associated with the hardware model. The memory mapping system further includes an evaluation logic in each logic device coupled to the hardware model, the conductive connector driver, the memory block interface, and the conductive connector controller for providing evaluation control signal. The evaluation control signals are used to evaluate data in the hardware model and to control write/read memory access between at least one logic device and at least one memory device via the conductive connector driver and the memory block interface.
Further in accordance with the invention, there is provided a simulation system operating in a host computer system for simulating a behavior of a circuit, the host computer system including a central processing unit (CPU), main memory, a local conductive connector coupling the CPU to main memory and allowing communication between the CPU and main memory, and a system conductive connector, the circuit having a structure and a function specified in a hardware language, the hardware language capable of describing the circuit as component types and connections. The system includes a software model of the circuit coupled to the local conductive connector, software control logic coupled to the software model and a hardware logic element, for controlling the operation of the software model and said hardware logic element. The software logic includes interface logic which is capable of receiving input data and a clock signal from an external process and clock detection logic for detecting an active edge of the clock signal and generating a trigger signal. The hard logic element is coupled to the system conductive connector and includes a system conductive connector controller, a hardware model conductive connector coupled to the system conductive connector controller, at least one logic device and at least one memory device coupled to the hardware model conductive connector, a hardware model of at least a portion of the circuit residing in at least one logic device, the hard ware logic element including clock enable logic for evaluating data in the hardware model in response to the trigger signal, and a memory mapping system for mapping at least one memory block associated with the circuit in the hardware model from at least one logic device to at least one memory device.
Further in accordance with the invention, there is provided a memory mapping system for mapping at least one memory block from at least one logic device to at least one memory device in a reconfigurable hardware unit. The reconfigurable hardware unit includes an interconnect controller, at least one logic device for modeling at least a portion of the user design in hardware where the hardware model has at least one memory block and associated user memory interface, at least one memory device, an interconnect subsystem coupling at least one logic device, at least one memory device, and the interconnect controller. The memory mapping system include an interconnect driver coupled to the interconnect subsystem, a memory block interface coupled to the interconnect driver, the interconnect subsystem, and the user memory interface to handle write/read memory access between at least one logic device and at least one memory device, with at least one memory device storing the memory blocks associated with the hardware model. The memory mapping system further includes an evaluation logic in each logic device coupled to the hardware model, the interconnect driver, the memory block interface, and the interconnect controller for providing evaluation control signals, the evaluation control signals used to evaluate data in the hardware model and to control write/read memory access between at least one logic device and at least one memory device via the interconnect driver and the memory block interface.